home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 August: Tool Chest / Dev.CD Aug 98 TC.toast / Sample Code / Processes / MP Threaded Sort / Sort / SortPicts4.cp < prev    next >
Encoding:
Text File  |  1997-03-13  |  1.8 KB  |  97 lines  |  [TEXT/CWIE]

  1. #include "SortPicts.h"
  2.  
  3. void    SortPicts::Scramble( void)
  4. {
  5.     long            loop;
  6.     
  7.     if ( !coplandTask ) {
  8.         UseSortData();
  9.     }
  10.     UseUpdateFunc( ::UpdateScramble);
  11.     
  12.     for( loop = 1; loop < N; loop ++)
  13.         ExchangeSortItem( Random(loop), loop);
  14.     
  15.     if ( !coplandTask ) {
  16.         UnuseSortData();
  17.     }
  18. }
  19.  
  20.  
  21. void    SortPicts::UseUpdateFunc( UpdateFuncPtr func)
  22. {
  23.     updateFunc = func;
  24. }
  25.  
  26. void    SortPicts::Update( void)
  27. {
  28.     (*updateFunc)( this);
  29. }
  30.  
  31.  
  32. void    UpdateScramble( SortPicts *sortPicts)
  33. {
  34.     sortPicts->UpdateScramble();
  35. }
  36.  
  37.  
  38. void    UpdateSortPict( SortPicts *sortPicts)
  39. {
  40.     sortPicts->UpdateScramble();
  41. }
  42.  
  43.  
  44. void    SortPicts::UpdateScramble( void)
  45. {
  46.     UpdateSortPict();
  47. }
  48.  
  49. void    SortPicts::UpdateSortPict( void)
  50. {
  51.     GrafPtr            savePort;
  52.  
  53.     if ( !coplandTask )
  54.     {
  55.         if( copyBitsRect.bottom > copyBitsRect.top) {
  56.             UseSortData();
  57.         
  58.             GetPort( &savePort);    
  59.             SetPort( me);
  60.             
  61.             copyBitsRect.left = 0;
  62.             copyBitsRect.right = (short) pictWidth;
  63.             windPictRect.top = copyBitsRect.top +kWindPictRectVoffset;
  64.             windPictRect.bottom = copyBitsRect.bottom +kWindPictRectVoffset;
  65.         
  66.             CopyBits(    (const BitMap *) *sortPixmap,
  67.                         (const BitMap *) (*(((CWindowPtr)me)->portPixMap)),
  68.                         ©BitsRect, ©BitsRect, 
  69.                         srcCopy, (RgnHandle)0);
  70.             
  71.             copyBitsRect.top = windPictRect.bottom;
  72.             copyBitsRect.bottom = windPictRect.top;
  73.             
  74.             SetPort( savePort);
  75.             
  76.             UnuseSortData();
  77.         }
  78.     } else {
  79.             //GetPort( &savePort);    
  80.             //SetPort( me);
  81.             if( copyBitsRect.bottom > copyBitsRect.top) {
  82.                 copyBitsRect.left = 0;
  83.                 copyBitsRect.right = (short) pictWidth;
  84.                 windPictRect.top = copyBitsRect.top +kWindPictRectVoffset;
  85.                 windPictRect.bottom = copyBitsRect.bottom +kWindPictRectVoffset;
  86.         
  87.                 this->Draw();
  88.                 copyBitsRect.top = windPictRect.bottom;
  89.                 copyBitsRect.bottom = windPictRect.top;
  90.             
  91.  
  92.             }
  93.             //SetPort( savePort);
  94.     }
  95. }
  96.  
  97.